この項では、次のキャッシュ表属性について説明します。
UNIQUE HASH ON属性は、すべてのタイプのキャッシュ・グループに対して使用できます。
UNIQUE HASH ONによって、主キーのハッシュ・ページ数を設定できます。これはCREATE TABLE文で使用される句と同じです。詳細は、『Oracle TimesTen In-Memory Database APIおよびSQLリファレンス・ガイド』のCREATE TABLEに関する項を参照してください。
PROPAGATE属性は、USERMANAGEDキャッシュ・グループでのみ使用します。ただし、ここで説明する伝播動作は、SYNCHRONOUS WRITETHROUGH(SWT)キャッシュ・グループの動作に類似しています。
PROPAGATEは、TimesTenキャッシュ・グループの表に対する変更が、対応するOracle表にコミット時に自動的に伝播されるように指定します。NOT PROPAGATEは、伝播を無効にします。
キャッシュされた表がPROPAGATE属性で定義されている場合、キャッシュされた表に対して行われた更新は、TimesTenのコミット処理中にOracleに伝播されます。これは、次の同期方法で実行されます。
アプリケーション・ユーザーのかわりにOracleに接続すると、コミットが実行されます。ユーザーのOracleログインおよびパスワードは、UIDおよびOraclePWD属性を使用して、DSNまたはTimesTenの接続文字列に指定する必要があります(「キャッシュされた表のDSN定義」を参照)。
コミットをOracleに伝播するには、次の要件が満たされている必要があります。
この要件では、TimesTenで更新中の行とOracleでのそれらに対応する元の行との間に1対1のマッピングが確立されていることを確認することが目的です。この1対1のマッピングが確立されている場合は、キャッシュされていない行に与える影響を心配せずに、更新を適用できます。
デフォルトでは、キャッシュ・グループ表はNOT PROPAGATE属性が指定されて作成されるため、表に対する更新はOracleに伝播されません。PROPAGATEが有効になっている場合、Oracleに対してコミットする必要がない変更を、キャッシュされた表に対して行う必要があることもあります。たとえば、キャッシュされた表にPROPAGATEが設定されていて、アプリケーションがこの表をOracleの最新データでリフレッシュするとします。アプリケーションは、キャッシュされた表からすべての行を削除した後、その表にOracleの最新データを再挿入できます。この方法の問題点は、削除のリクエストがOracleにも伝播され、Oracleから行が削除されてしまうことです。この問題を回避するには、アプリケーションで組込みプロシージャttCachePropagateFlagSetをコールして伝播を無効にし、伝播を後で再度有効にします。
伝播が無効になっている場合は、FLUSH CACHE GROUP文を使用して、Oracleに対する挿入および更新を選択的に伝播できます(「USERMANAGEDキャッシュ・グループのフラッシュ」を参照)。
PROPAGATEを使用する場合は、次の制限が適用されます。
PROPAGATEを使用する表定義の例は、例2.11を参照してください。
READONLY属性は、USERMANAGEDキャッシュ・グループでのみ使用します。
READONLY表属性を各キャッシュ表に対して指定して、TimesTenアプリケーションがその表を更新することを禁止できます。
READONLYを使用する場合は、次の制限が適用されます。
PassThrough=2を設定したREADONLY表を使用する場合の特別な考慮事項については、「パススルー・レベルの設定」を参照してください。